#pragma once

#include "WindowFramework.h"
#include "Direct3DFramework.h"
#include "DirectInputFramework.h"

#include "clkMath.h"

#define FRAMEWORKS_MEM_REF &m_app,&m_fps,&m_time,&m_d3d,&m_din
#define FRAMEWORKS_MEM_REG m_app,m_fps,m_time,m_d3d,m_din
#define FRAMEWORKS_ARG_REF &a_app,&a_fps,&a_time,&a_d3d,&a_din
#define FRAMEWORKS_ARG_REG a_app,a_fps,a_time,a_d3d,a_din

struct clkAbstract
{
	WINAPP*  m_app;
	WINFPS*  m_fps;
	WINTIME* m_time;
	D3DF*    m_d3d;
	DINF*    m_din;

	clkAbstract()
	{
		m_app  = 0;
		m_fps  = 0;
		m_time = 0;
		m_d3d  = 0;
		m_din  = 0;
	}

	virtual void init(
		WINAPP*  a_app,
		WINFPS*  a_fps,
		WINTIME* a_time,
		D3DF*    a_d3d,
		DINF*    a_din)
	{
		if(a_app)  m_app  = a_app;
		if(a_fps)  m_fps  = a_fps;
		if(a_time) m_time = a_time;
		if(a_d3d)  m_d3d  = a_d3d;
		if(a_din)  m_din  = a_din;
	}
};